package com.cw.carwashstoress.service.impl;

import java.util.List;
import com.cw.carwashstoress.service.StoreService;
import com.ruoyi.common.core.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.cw.carwashstoress.mapper.StoreMapper;
import com.cw.carwashstoress.domain.Store;

/**
 * 门店管理 服务层实现
 */
@Service
public class StoreServiceImpl implements StoreService {
    @Autowired
    private StoreMapper storeMapper;

    /**
     * 查询门店列表
     * 
     * @param store 门店信息
     * @return 门店列表
     */
    @Override
    public List<Store> selectStoreList(Store store) {
        return storeMapper.selectStoreList(store);
    }

    /**
     * 查询门店详细信息
     * 
     * @param id 门店ID
     * @return 门店信息
     */
    @Override
    public Store selectStoreById(Long id) {
        return storeMapper.selectStoreById(id);
    }

    /**
     * 新增门店
     * 
     * @param store 门店信息
     * @return 结果
     */
    @Override
    public int insertStore(Store store) {
        // 校验门店名称是否唯一
        if (!checkStoreNameUnique(store)) {
            throw new RuntimeException("该城市已有同名门店"); // 或者抛出更具体的业务异常
        }
        return storeMapper.insertStore(store);
    }

    /**
     * 修改门店
     * 
     * @param store 门店信息
     * @return 结果
     */
    @Override
    public int updateStore(Store store) {
        return storeMapper.updateStore(store);
    }

    /**
     * 删除门店信息
     * 
     * @param id 门店ID
     * @return 结果
     */
    @Override
    public int deleteStoreById(Long id) {
        return storeMapper.deleteStoreById(id);
    }

    /**
     * 批量删除门店信息
     * 
     * @param ids 需要删除的门店ID数组
     * @return 结果
     */
    @Override
    public int deleteStoreByIds(Long[] ids) {
        return storeMapper.deleteStoreByIds(ids);
    }

    /**
     * 校验门店是否已存在
     * 
     * @param store 门店信息
     * @return 结果
     */
    @Override
    public boolean checkStoreNameUnique(Store store) {
        // 传入当前门店的ID
        Store existStore = storeMapper.checkStoreNameUnique(store.getStoreName(), store.getCityId(), store.getId());
        return existStore == null;
    }

    /**
     * 根据城市ID查询门店列表
     * 
     * @param cityId 城市ID
     * @return 门店列表
     */
    @Override
    public List<Store> selectStoreListByCityId(Integer cityId) {
        Store store = new Store();
        store.setCityId(cityId);
        return storeMapper.selectStoreList(store);
    }

    /**
     * 更新门店订单统计信息
     * 
     * @param store 门店信息
     * @return 结果
     */
    @Override
    public int updateStoreOrderStats(Store store) {
        return storeMapper.updateStore(store);
    }
}
